#include <stdio.h>
#include <string.h>
#include <assert.h>
void* my_memmove(void* dest, const void* src, size_t count) {
    assert(src != NULL); // 断言不要传入一个空的地址
    assert(dest != NULL); // 断言不要传入一个空的地址
    void* temp = dest; // 存一下dest的地址
    if(dest < src) {
        while(count--) {
            *((char*)dest) = *((char*)src);
            (char*)dest++;
            (char*)src++;
        } 
    }else {
        while(count--) {
            *((char*)dest + count) = *((char*)src + count); // 从后向前
        }
    }
    return temp;
}
int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    my_memmove(arr + 2, arr, 16);
    for(int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

